// 给定一个非负整数num，反复将各个位上的数字相加，直到结果为一位数。
// 输入：38 输出：2
// let foo = (num) => {
//   let arr = num.toString().split("");
//   let res = arr.reduce((p, c) => p * 1 + c * 1);
//   if (res < 10) {
//     return res;
//   } else {
//     return foo(res); // 需要给foo返回值，否则undefined
//   }
// };
// console.log(foo(9483852)); // 3

// ---------------------
// 数组中有一个数字出现的次数超过数组长度的一半，找出这个数字。
// 假设数组是非空的，并且给定的数组总是存在多数元素。
// let foo = (nums) => {
//   let hash = {};
//   nums.map((val) => {
//     if (val in hash) {
//       hash[val]++;
//     } else {
//       hash[val] = 1;
//     }
//   });
//   for (key in hash) {
//     if (hash[key] > nums.length / 2) return key;
//   }
// };
// console.log(foo([1, 2, 3, 2, 2, 2, 2, 2, 5])) // 2

// let o = {a: 1, b: 5}
// o.e = 2
// let val1 = 'v'
// o.val1 = 1
// console.log(o)
// let val2 = 'v'
// // 注意：若键是变量，则加括号（否则就像上面一样，将变量名设置为了key）
// o[val2] = 1
// console.log(o)

// -------------------------
// 输入生日，计算出还有多少天生日
// 输入 '5.12'
let getBirth = (num) => {
  // 月
  let n = num.split(".")[0];
  // 日
  let d = num.split(".")[1];
  // 获取目前的年份
  let curYear = new Date().getFullYear(); // 2022
  // 生日的时间
  let birTime = new Date(curYear, n - 1, d);
  if (birTime < new Date()) {
    // 生日时间小于当前时间，则将生日时间加一年
    birTime.setFullYear(curYear + 1);
    // console.log(birTime.getFullYear()); // 2023
  }
  let diff = birTime.getTime() - new Date().getTime();
  return Math.ceil(diff / (24 * 60 * 60 * 1000));
};
console.log(getBirth("9.12")); // 7
console.log(0501) // 321 （因为0开头表示八进制）
console.log(501)  // 501

// ----------------------------
// 获取url的query，输入"http://www.qunar.com?a=aa&d&b=bb#hash"  返回 {"a":"aa","d":"","b":"bb"}
let getQuery = (url) => {
  let querys = url.split("?")[1];
  if (querys.indexOf("#")) {
    let qsArr = querys.split("");
    qsArr.splice(querys.indexOf("#"));
    querys = qsArr.join("");
  }
  let arrQr = querys.split("&");
  let re = arrQr.reduce((p, c) => {
    let key = c.split("=")[0];
    let val = c.split("=")[1];
    val ? (p[key] = val) : (p[key] = "");
    return p;
  }, {});
  // 使用JSON.stringify 将对象转为字符串格式，若不使用，则 返回{ a: 'aa', d: '', b: 'bb' }
  return JSON.stringify(re);
};
console.log(getQuery("http://www.qunar.com?a=aa&d&b=bb#hash"));


// ------------------------------
// 输入数字，使得用最少的钱币。输出100、50、20、5、1元所用数量， 如128 输出 [ 1, 0, 1, 1, 3 ]
function makeChagne(change) {
  let arr = [];
  arr[0] = parseInt(change / 100);
  arr[1] = parseInt(change % 100 / 50)
  arr[2] = parseInt(change % 100 % 50 / 20)
  arr[3] = parseInt(change % 100 % 50 % 20 / 5)
  arr[4] = parseInt(change % 100 % 50 % 20 % 5)
  return arr
}
console.log(makeChagne(128));
